package org.example.lease.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.example.lease.model.entities.ApartmentInfo;
import org.example.lease.model.entities.FacilityInfo;
import org.example.lease.model.entities.LabelInfo;
import org.example.lease.model.enums.ItemType;
import org.example.lease.vo.apartment.ApartmentItemVo;
import org.example.lease.vo.apartment.ApartmentQueryVo;
import org.example.lease.vo.fee.FeeValueVo;
import org.example.lease.vo.graph.GraphVo;

import java.util.List;

/**
 * @author 宋孟林
 * @description
 * @date: 2025/5/12 16:52
 */
public interface ApartmentInfoMapper extends BaseMapper<ApartmentInfo> {
    /**
     * 自定义分页查询方法，sql中无需处理分页逻辑，只需要在参数中的第一个位置添加一个IPage类型的参数即可，其他的参数自定义
     *
     * @param page             page
     * @param apartmentQueryVo queryVo
     * @return IPage
     */
    IPage<ApartmentItemVo> pageApartmentItemByQuery(@Param("page") IPage<ApartmentItemVo> page,
                                                    @Param("apartmentQueryVo") ApartmentQueryVo apartmentQueryVo);

    /**
     * 查询公寓的图片并封装到集合中
     *
     * @param itemType 对象类型
     * @return 图片集合
     */
    List<GraphVo> selectGraphVoList(@Param("itemType") ItemType itemType, @Param("id") Long id);

    /**
     * 根据id查询公寓--配套关系中的配套信息
     *
     * @param id id
     * @return list
     */
    List<FacilityInfo> selectFacilityInfoList(Long id);

    /**
     * 根据类型和id查询公寓标签列表
     *
     * @param itemType itemType
     * @param id       id
     * @return list --> labelInfo
     */
    List<LabelInfo> selectLabelInfoList(@Param("itemType") ItemType itemType, @Param("id") Long id);

    /**
     * 根据id查询公寓杂费值列表
     *
     * @param id id
     * @return list --> feeValueVo
     */
    List<FeeValueVo> selectFeeValueVoList(Long id);
}




